// 引入 Nuxt3 的 defineEventHandler 和 readBody 方法，用于处理 API 请求
const { defineEventHandler, readBody, getQuery } = require('h3');
// 引入 MongoDB 连接工具
const { getDb } = require('../db');

// 导出默认的事件处理器
module.exports = defineEventHandler(async (event) => {
  // 获取请求方法（GET、POST、DELETE）
  const method = event.node.req.method;
  // 获取数据库实例
  const db = await getDb();
  // 获取 users 集合
  const collection = db.collection('users');

  if (method === 'POST') {
    // 注册或登录
    const body = await readBody(event);
    if (body.action === 'register') {
      // 注册用户
      const exist = await collection.findOne({ username: body.username });
      if (exist) return { success: false, message: '用户名已存在' };
      const result = await collection.insertOne({ username: body.username, password: body.password }); // 明文存储仅为演示
      return { success: true, insertedId: result.insertedId };
    } else if (body.action === 'login') {
      // 登录
      const user = await collection.findOne({ username: body.username, password: body.password });
      if (user) return { success: true, user: { username: user.username, _id: user._id } };
      return { success: false, message: '用户名或密码错误' };
    }
    return { success: false, message: '未知操作' };
  }

  if (method === 'GET') {
    // 查询所有用户（仅演示，实际应做权限校验）
    const users = await collection.find({}, { projection: { password: 0 } }).toArray();
    return users;
  }

  if (method === 'DELETE') {
    // 删除用户
    const query = getQuery(event);
    if (!query.id) return { success: false, message: '缺少用户ID' };
    await collection.deleteOne({ _id: require('mongodb').ObjectId(query.id) });
    return { success: true };
  }

  // 其他未处理的方法
  return { success: false, message: '不支持的请求方法' };
}); 